<?php
define('UC_API','http://192.168.1.199/uc/user/api/api.php');//接口地址
define('UC_ID', '8');//接口id
define('UC_KEY', '8nvcVrpAtNw5haHfmpab4j3P0NGsXXtJ');//接口密钥

define('UC_RETURNSITEURL','http://192.168.1.199/weike/lz/');//接口回传地址，本地地址

/**
 * 对称加密
 * @param type $key 密钥
 * @param type $str 明文
 * @return string 密文
 */
function uc_encode( $key, $str ){
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND);
        return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_ECB, $iv);
}

/**
 * 对称解密
 * @param type $key 解密
 * @param type $str 密文
 * @return string 明文
 */
function uc_decode( $key, $str ){
        $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB),MCRYPT_RAND);
        return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $str, MCRYPT_MODE_ECB, $iv);
}

/**
 * 与api交互
 * @param array $data 数据
 * @return string
 */
function _uc_sendtoapi($data) {
    $data = array('id'=>UC_ID, 'content'=>base64_encode(uc_encode(UC_KEY, json_encode($data))));
    $data=http_build_query($data);
    $opts = array(
        'http'=>array(
          'method'=>"POST",
          'header'=>"Content-type:application/x-www-form-urlencoded\r\nContent-Length:".strlen($data)."\r\n",
          'content'=> $data
        )
    );
    $context = stream_context_create($opts);
    return file_get_contents(UC_API, FALSE, $context);
}

/**
 * 检查是否已存在用户名
 * @param string $uname 用户名
 * @return int 大于0 已经存在
 */
function uc_checkuname($uname) {
    $sendarr = array('op'=>'checkuname','uname'=>$uname);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr > 0) {
            return $rstr;
        } else {
            return 0;
        }
    } else {
        return 0;
    }
}

/**
 * 检查密码
 * @param int uid 用户中心id
 * @param string $pwd 密码
 * @return int 大于0 已经存在
 */
function uc_checkpwd($uid, $pwd) {
    $sendarr = array('op'=>'checkpwd','uid'=>$uid,'pwd'=>$pwd);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr > 0) {
            return $rstr;
        } else {
            return 0;
        }
    } else {
        return 0;
    }
}

/**
 * 据用户名查用户是否有效
 * @param string $uname 用户名
 * @return int 大于0 没有被冻结
 */
function uc_valideuser_uname($uname) {
    $sendarr = array('op'=>'valideuser_uname','uname'=>$uname);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr > 0) {
            return $rstr;
        } else {
            return 0;
        }
    } else {
        return 0;
    }
}

/**
 * 查询邮箱手机绑定
 * @param int $uid 用户id
 * @return boolean|array 绑定有邮箱或手机返回array email mobile
 */
function uc_bindedemailmobile($uid) {
    $sendarr = array('op'=>'bindedemailmobile','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
        if ($rstr) {
            return $rstr;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 实名认证信息
 * @param int $uid 用户id
 * @return boolean|array(realname,idcard,idcodeimg)
 */
function uc_idcode($uid) {
    $sendarr = array('op'=>'idcode','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = json_decode(trim(uc_decode(UC_KEY, base64_decode($rstr))), TRUE);
        if ($rstr) {
            return $rstr;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 等级与经验值
 * @param int $uid 用户id
 * @return boolean|array(ulevel,upoints)
 */
function uc_ulevelupoints($uid) {
    $sendarr = array('op'=>'ulevelupoints','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = json_decode(trim(uc_decode(UC_KEY, base64_decode($rstr))), TRUE);
        if ($rstr) {
            return $rstr;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 通过手机发送验证码
 * @param int $uid 用户id
 * @param string $ip ip
 * @param string $title 标题
 * @return boolean
 */
function uc_mobilesendvcode($uid,$ip,$title) {
    $sendarr = array('op'=>'bindedemailmobile','uid'=>$uid,'ip'=>$ip,'title'=>$title);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr == 'true') {
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 通过邮箱发送验证码
 * @param int $uid 用户id
 * @param ip $ip ip
 * @param string $title 标题
 * @return boolean
 */
function uc_emailsendvcode($uid,$ip,$title) {
    $sendarr = array('op'=>'emailsendvcode','uid'=>$uid,'ip'=>$ip,'title'=>$title);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr == 'true') {
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 验证 验证码
 * @param int $uid 用户id
 * @param string $vcode 验证码
 * @return boolean
 */
function uc_checkvcode($uid,$vcode) {
    $sendarr = array('op'=>'checkvcode','uid'=>$uid,'vcode'=>$vcode);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr == 'true') {
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 验证 修改验证码
 * @param int $uid 用户id
 * @param string $vcode 验证码
 * @return boolean
 */
function uc_checkvcode2($uid,$vcode) {
    $sendarr = array('op'=>'checkvcode','uid'=>$uid,'vcode'=>$vcode);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        $rstr = trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
        if ($rstr == 'true') {
            return TRUE;
        } else {
            return FALSE;
        }
    } else {
        return FALSE;
    }
}

/**
 * 取头像
 * @param array $uids uid数组
 * @return array 头像数组
 */
function uc_getuheaderimg($uids) {
    $sendarr = array('op'=>'getuheaderimg','uids'=>implode(',', $uids));
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
    }
    return array();
}

/**
 * 根据用户名与密码查询用户是否存在
 * @param string $uname
 * @param string $upwd
 * @return array(id,uname,utime)
 */
function uc_checkunameupwd($uname,$upwd) {
    $sendarr = array('op'=>'checkunameupwd','uname'=>$uname,'upwd'=>$upwd);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
    }
    return 0;
}

/**
 * 获取收货地址
 * @param int $uid 用户中心用户id
 * @return array
 */
function uc_useraddress($uid) {
    $sendarr = array('op'=>'useraddress','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
    }
    return array();
}

/**
 * 检测收货地址是否有效
 * @param int $uid 用户中心用户id
 * @param int $id 地址id
 * @return int 1成功 0失败
 */
function uc_checkaddressid($uid, $id) {
    $sendarr = array('op'=>'checkaddressid','uid'=>$uid, 'id'=>$id);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
    }
    return 0;
}

/**
 * 是否激活了火工宝
 * @param int $uid 用户中心用户id
 * @return int 0失败 大于0为火工宝id
 */
function uc_havehgb($uid) {
    $sendarr = array('op'=>'havehgb','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return trim(uc_decode(UC_KEY, trim(base64_decode($rstr))));
    }
    return 0;
}

/**
 * 用户扩展信息
 * @param int $uid 用户中心用户id
 * @return array
 */
function uc_userext($uid) {
    $sendarr = array('op'=>'userext','uid'=>$uid);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
    }
    return array();
}

/**
 * 用户名查用户id,uname,uemail,umobile
 * @param string $uname 用户名
 * @return array id,uname,uemail,umobile
 */
function uc_infobyuname($uname) {
    $sendarr = array('op'=>'infobyuname','uname'=>$uname);
    $rstr = _uc_sendtoapi($sendarr);
    if ($rstr) {
        return json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($rstr)))), TRUE);
    }
    return array();
}

/**
 * 测试本地到服务器的连接是否正确
 */
if (isset($_REQUEST['op']) && $_REQUEST['op'] == 'uctestconnettoserver') {
    $sendarr = array('op'=>'uctestconnettoserver','test'=>'test');
    echo trim(uc_decode(UC_KEY, trim(base64_decode(_uc_sendtoapi($sendarr)))));
}

/**
 * 响应服务器到本地的连接测试
 */
if (isset($_REQUEST['id']) && $_REQUEST['id'] == UC_ID && isset($_REQUEST['content'])) {
    $rarr = json_decode(trim(uc_decode(UC_KEY, trim(base64_decode($_REQUEST['content'])))), TRUE);
    if (isset($rarr['test']) && $rarr['test'] == 'test') {
        echo 'success';
    } else {
        echo 'error';
    }
}
